# SPDX-FileCopyrightText: 2023 Andrew Gunnerson
# SPDX-License-Identifier: GPL-3.0-only
#
# source "${0%/*}/boot_common.sh" <log file>

# 将脚本的标准输出和标准错误重定向到传入的第一个参数（日志文件）
exec >"${1}" 2>&1

# 获取当前脚本所在的目录路径
mod_dir=${0%/*}

# 定义一个函数，用于打印带分隔线的标题信息
header() {
    echo "----- ${*} -----"
}

# 定义一个函数，用于从 module.prop 文件中读取指定属性的值
module_prop() {
    grep "^${1}=" "${mod_dir}/module.prop" | cut -d= -f2
}

# 定义一个函数，用于运行 CLI APK 中的 Java 类
run_cli_apk() {
    # 设置 CLASSPATH 环境变量，指定 APK 文件路径
    CLASSPATH="${cli_apk}" app_process / "${@}" &
    # 获取后台进程的 PID
    pid=${!}
    # 等待进程执行完成
    wait "${pid}"
    # 打印退出状态码
    echo "Exit status: ${?}"
    # 打印相关的日志信息
    echo "Logcat:"
    logcat -d --pid "${pid}"
}

# 从 module.prop 中获取模块 ID 和版本号
app_id=$(module_prop id)
app_version=$(module_prop version)
# 构造 CLI APK 文件的路径（支持通配符）
cli_apk=$(echo "${mod_dir}"/system/priv-app/"${app_id}"/app-*.apk)

# 打印环境信息标题
header Environment
# 打印当前时间戳
echo "Timestamp: $(date)"
# 打印当前脚本路径
echo "Script: ${0}"
# 打印应用 ID
echo "App ID: ${app_id}"
# 打印应用版本
echo "App version: ${app_version}"
# 打印 CLI APK 路径
echo "CLI APK: ${cli_apk}"
# 打印当前用户的 UID/GID 和安全上下文
echo "UID/GID/Context: $(id)"